// 统一封装接口方法

// 每个方法负责请求一个url地址，逻I辑页面导入这个接口方法就能发起请求
// url地址可以在这里统一管理
import axios from '@/utils/request.js'

// 登陆-登陆接口
export const loginAPI = ({ mobile, code }) => axios(
  {
    url: '/v1_0/authorizations',
    method: 'POST',
    data: { mobile, code }
  })

// 用户-关注
export const userFollowedAPI = (userID) => axios(
  {
    url: '/v1_0/user/followings',
    method: 'POST',
    data: {
      target: userID
    }
  })
// 用户-取关
export const userUnFollowedAPI = (userID) => axios(
  {
    url: `/v1_0/user/followings/${userID}`,
    method: 'DELETE'
  })
// 用户-获取个人资料
export const userProfileAPI = () => axios(
  {
    url: '/v1_0/user/profile'
  })
// 用户-获取基本信息
export const getUserInfoAPI = () => axios(
  {
    url: '/v1_0/user'
  })
// 用户-更新头像
export const updateUserPhotoAPI = (formObj) => axios({
  url: '/v1_0/user/photo',
  method: 'PATCH',
  data: formObj// formObj是外面要传进来的new FormData()表单对象
})
// 用户-更新基本资料
export const updateUserProfileAPI = (dataObj) => {
  const obj = {
    name: '', // 昵称
    gender: 0, // 性别，男0，女1
    birthday: '', // 生日
    intro: ''// 个人介绍
  }
  for (const key in obj) {
    if (dataObj[key] === undefined) {
      delete obj[key]
    } else {
      obj[key] = dataObj[key]
    }
  }
  return axios(
    {
      url: '/v1_0/user/profile',
      method: 'PATCH', // patch局部更新，put全部更新
      data: obj
    })
}
// 用户-刷新token
export const getNewTokenAPI = () => axios(
  {
    url: '/v1_0/authorizations',
    method: 'PUT',
    headers: {
      // 请求拦截器统一携带是token，而这次请求需要带的是刷新token
      //
      Authorization: 'Bearer ' + localStorage.getItem('refresh_token')
    }
  })
// 频道-获取所有频道
export const getAllChangeilsAPI = () => axios(
  {
    url: '/v1_0/channels'
  })
// 频道-获取用户选择的频道（用户没有登录。默认返回后台设置的默认频道列表）
export const getUserChannelsAPI = () => axios(
  {
    url: '/v1_0/user/channels'
  })
// 频道-更新覆盖频道
export const updateChannelAPI = (channels) => axios(
  {
    url: '/v1_0/user/channels',
    method: 'PUT',
    data: {
      channels// 用户已选整个频道数组
    }
  })
// 频道-删除用户指定的频道
export const removeTheChannelAPI = (index) => axios(
  {
    url: `/v1_0/user/channels/${index}`,
    method: 'DELETE'
  })

// 文章-获取列表
export const getAllArticleListAPI = ({ id, time }) => axios(
  {
    url: '/v1_0/articles',
    params: {
      channel_id: id,
      timestamp: time
    }
  })
// 文章-反馈-不感兴趣
export const dislikeArticleAPI = (id) => axios(
  {
    url: '/v1_0/article/dislikes',
    method: 'POST',
    data: {
      target: id
    }
  })
// 文章-反馈垃圾内容
export const reportArticleAPI = ({ id, typeId }) => axios(
  {
    url: '/v1_0/article/reports ',
    method: 'POST',
    data: {
      target: id,
      type: typeId,
      remark: '若是想要写入，可以在逻辑页面判断下，若类型=0，给一个弹出框输入框输入其他内容，传参到这里'
    }
  })
// 文章-获取详情
export const detailAPI = (article_id) => axios(
  {
    url: `/v1_0/articles/${article_id}`
  })
// 文章-点赞
export const likeArticleAPI = (artId) => axios(
  {
    url: '/v1_0/article/likings',
    method: 'POST',
    data: {
      target: artId
    }
  })
// 文章-取消点赞
export const unlikeArticleAPI = (artId) => axios(
  {
    url: `/v1_0/article/likings/${artId}`,
    method: 'DELETE'
  })
// 文章-评论-喜欢
export const commentLiketAPI = (comId) => axios(
  {
    url: '/v1_0/comment/likings',
    method: 'POST',
    data: {
      target: comId
    }
  })
// 文章-评论-取消喜欢
export const commentDiskLiketAPI = (comId) => axios(
  {
    url: `/v1_0/comment/likings/${comId}`,
    method: 'DELETE'

  })
// 文章-评论-发布评论
export const commentSendAPI = ({ tarId, Content, artId = null }) => {
  const obj = {
    target: tarId, // 文章id【对文章进行评论】
    content: Content
    // art_id: artId// 评论id【对评论进行评论】
  }
  if (artId !== null) { // 判断：若不为空，则表示对评论进行评论-添加参数：评论id
    obj.art_id = artId
  }
  return axios(
    {
      url: '/v1_0/comments',
      method: 'POST',
      data: obj
    })
}
// 搜索-联想菜单
export const suggestListAPI = (keywords) => axios(
  {
    url: '/v1_0/suggestion',
    params: {
      q: keywords
    }
  })
// 搜索-搜索结果列表
export const searchResultAPI = ({ pagenum, keywords }) => axios(
  {
    url: '/v1_0/search',
    params: {
      page: pagenum, // 页数
      per_page: 10, // 每页数量
      q: keywords// 搜索关键字
    }
  })

// 评论-获取列表
export const commentListAPI = ({ artId, offset = null, limit = 10 }) => axios(
  {
    url: '/v1_0/comments',
    params: {
      type: 'a',
      source: artId,
      offset,
      limit
    }
  })

// axios中，data请求体传递参数。如果值为null是不会忽略这个参数的，也会把参数名和值携带到后台
// axios中，params传递参数。若值为null会忽略
